home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 7
/
FM Towns Free Software Collection 7.iso
/
t_os
/
komei4
/
komei4.exe
/
ICON
/
CONTEN2.HD6
< prev
next >
Wrap
Text File
|
1993-06-03
|
10KB
|
799 lines
ds_name db 'MOJ\CONTEN',0
; マウスにより色の成分を変える
; 青赤緑の色を細い箱を出しているモジュール
paint_wd:
call pal_syo ;letset
re_paint:
WD_CLS 0
BOX boxdt,4
BOX boxdt1,4
call nowcol
mov bx,[edi]
call cgcol
MOZI mozidt
ret
ds_pal0:
call sub_esi
db 3*20 dup(0)
ds_pal1:
call sub_esi
db 3*20 dup(0)
pal_syo:
cld
mov dx,0448h ; video output controler I/O address
mov al,01b ; select priority register
out dx,al
;R 448 al=1
; プライオリティレジスタ
mov dx,044Ah ; video output controler I/O data
mov al,00001001b ; layer 0 pallet use
out dx,al ; forground layer 1
;--------
;画面0 のパレットセット
call ds_pal0
mov edi,esi
push ds
pop es
mov ecx,16
init12:
mov al,16
sub al,cl
call getpal ; set pallet
loop init12
;-------------------
init15:
; mov dx,0448h ; video output controler I/O address
; mov al,01b ; select priority register
; out dx,al
; mov dx,044Ah ; video output controler I/O data
; mov al,00101001b ; layer 1 pallet, forground layer 1
; out dx,al
mov dx,0448h ; video output controler I/O address
mov al,01b ; select priority register
out dx,al
mov dx,044Ah ; video output controler I/O data
mov al,00101000b ; layer 1 pallet, forground layer 0
out dx,al
;----------
; 画面1のパレットセット
call ds_pal1 ;mov esi,offset paldat1
mov edi,esi
mov ecx,16 ;paldat1N
init14:
mov al,16
sub al,cl
call getpal ; set pallet
loop init14
ret
bye_bye:
mov bx,0
mov ah,24
mov al,2
call komei
BOOK
mov ecx,40[esi]
call palet1
mov esi,ecx
xchg edi,esi
mov ecx,8*16+4
cld
rep movsb
mov bx,1
mov ah,24
mov al,2
call komei
WD_ERZ 0
WD_LEFT
ret
be_called:
BOOK
mov ax,300[esi]
mov bx,302[esi]
cmp ax,102
je cccc
cmp ax,1
je note_chg
cmp ax,5
je cgcol
cmp ax,6
je bye_bye
cmp ax,20
je newld
cmp ax,400
je neru
cmp ax,500
je okiru
mov eax,0
mov 300[esi],eax
ret
neru:
WD_ERZ 1
WD_ERZ 0
WD_LEFT
ret
okiru:
WD_WANT
jmp re_paint
cccc:
call nowcol
mov dx,[edi]
mov ah,7
mov al,0
call zzz
mov ah,7
mov al,2
call zzz
ret
;******************************************
note_chg:
call init15
call nowcol
mov bx,[edi]
cgcol:
call nowcol
mov [edi],bx
call boxdt
mov [edi+36],bx
call ds_pal1 ;palet1 data
movzx ebx,bx
mov eax,3
mul ebx
add esi,eax
movzx ax,byte ptr [esi]
movzx bx,byte ptr [esi+1]
movzx cx,byte ptr [esi+2]
shr ax,2
shr bx,2
shr cx,2
call ln2
mov 2[edi],ax
call ln4
mov 2[edi],bx
call ln6
mov 2[edi],cx
call look_me
mov ax,[esi+8]
cmp ax,1
jne neteruyo
call find1_1
call find2_1
call find3_1
call boxdt
add edi,20
mov ecx,1
call putbox
neteruyo:
ret
mouse_in:
cmp ch,1
je mouseck
ret
mouseck:
MOU boxdt,4
cmp bx,1 ;bx=1 find
je short mck1 ;ax = no
ret
mck1:
cmp ax,1
je find1
cmp ax,2
je find2
cmp ax,3
je find3
ret
gokei:
mov ebx,2
call hex2y
BOX boxdt1,3
MOZI mozidt
ret
;*********************************
find1:
mov ah,3
call MOUSE
call look_me
mov bx,16[esi]
sub dx,bx
sub dx,2
call ln2
mov 2[edi],dx
call find1_1
call nowcol
movzx ebx,word ptr [edi]
call ds_pal1
mov eax,3
mul ebx
add esi,eax ;blu head
call ln2
mov ax,2[edi]
shl ax,2
mov [esi],al
call nowcol
mov bx,[edi]
call l_set
ret
;**************************************
find2:
mov ah,3
call MOUSE
call look_me
mov bx,16[esi]
sub dx,bx
sub dx,2
call ln4
mov 2[edi],dx
call find2_1
call nowcol
movzx ebx,word ptr [edi]
call ds_pal1
mov eax,3
mul ebx
add esi,eax ;blu head
call ln4
mov ax,2[edi]
shl ax,2
mov [esi+1],al
call nowcol
mov bx,[edi]
call l_set
ret
;*********************************
find3:
mov ah,3
call MOUSE
call look_me
mov bx,16[esi]
sub dx,bx
sub dx,2
call ln6
mov 2[edi],dx
call find3_1
call nowcol
movzx ebx,word ptr [edi]
call ds_pal1
mov eax,3
mul ebx
add esi,eax ;blu head
call ln6
mov ax,2[edi]
shl ax,2
mov [esi+2],al
call nowcol
mov bx,[edi]
call l_set
ret
gam1_pal:
mov dx,0448h ; video output controler I/O address
mov al,01b ; select priority register
out dx,al
mov dx,044Ah ; video output controler I/O data
mov al,00101000b ; layer 1 pallet, forground layer 0
out dx,al
ret
letset:
mov ah,5
mov al,1
call zzz
call palet1
mov esi,edi
mov ah,4
mov al,1
jmp zzz
hennano:
mov ecx,16
mekun1:
mov ax,[edx]
add edx,2
mov [esi],al
add esi,8
loop mekun1
ret
newld:
mov esi,302[esi]
mov eax,[esi]
cmp eax,16
je newld1
sub esi,100
mov edx,esi
mov edi,esi
mov al,4eh[esi]
cmp al,3
je gra_01
ret
gra_01:
add edx,100h
add esi,100
mov eax,16
mov [esi],eax
add esi,8
push esi
inc esi
damekun:
call hennano
mov esi,[esp]
add esi,2
call hennano
mov esi,[esp]
call hennano
mov esi,[esp]
add esi,3
call hennano
pop esi
sub esi,4
mov ebx,0
mov ecx,16
mekun2:
mov [esi],ebx
inc ebx
add esi,8
loop mekun2
mov esi,edi
add esi,100
newld1:
call palet1
mov ecx,132
cld
rep movsb
call letset
ret
l_set:
call gam1_pal
mov ax,bx
call setpal0
ret
;*******************************
; setpal : set pallet data
;
; in : (ds:esi) = data address
; use: dx
;
setpal0:
mov dx,0FD90h ; pallet code
out dx,al
mov dx,0FD92h ; blue pallet data
outsb
mov dx,0FD94h ; red pallet data
outsb
mov dx,0FD96h ; green pallet data
outsb
ret
;**************************************
zzz: ;EGB CALL
M_ZZZ
find1_1:
BOX ln1,1
BOX ln2,1
call ln2
mov ax,2[edi]
shr ax,2
call mozidt
add edi,14
jmp gokei
find2_1:
BOX ln3,1
BOX ln4,1
call ln4
mov ax,2[edi]
shr ax,2
call mozidt
add edi,17
jmp gokei
find3_1:
BOX ln5,1
BOX ln6,1
call ln6
mov ax,2[edi]
shr ax,2
call mozidt
add edi,20
jmp gokei
;
; in ebx ketasu
; ax suuzi
; esi buffer
; use dx
; cx
hex2y:
mov cx,10
hex2y1:
mov dx,0
div cx
add dl,30h
mov [edi+ebx-1],dl
dec ebx
jnz hex2y
ret
nowcol:
call sub_edi
dw 14
palet0:
call sub_edi
dd 16
dd 0
db 0,0,0,0 ;青 赤 緑 and 0
dd 1
db 128,0,0,0
dd 2
db 0,128,0,0
dd 3
db 128,128,0,0
dd 4
db 0,0,128,0
dd 5
db 128,0,128,0
dd 6
db 0,128,128,0
dd 7
db 128,128,128,0
dd 8
db 64,64,64,0
dd 9
db 255,0,0,0
dd 10
db 0,255,0,0
dd 11
db 255,255,0,0
dd 12
db 0,0,255,0
dd 13
db 255,0,255,0
dd 14
db 0,255,255,0
dd 15
db 255,255,255,0
palet1:
call sub_edi
dd 16
dd 0
db 0,0,0,0 ;青 赤 緑 and 0
dd 1
db 128,0,0,0
dd 2
db 0,128,0,0
dd 3
db 128,128,0,0
dd 4
db 0,0,128,0
dd 5
db 128,0,128,0
dd 6
db 0,128,128,0
dd 7
db 128,128,128,0
dd 8
db 64,64,64,0
dd 9
db 255,0,0,0
dd 10
db 0,255,0,0
dd 11
db 255,255,0,0
dd 12
db 0,0,255,0
dd 13
db 255,0,255,0
dd 14
db 0,255,255,0
dd 15
db 255,255,255,0
;*******************************
; setpal : set pallet data
;
; in : (ds:esi) = data address
; use: dx
;
setpal1:
push esi
mov dx,0FD90h ; pallet code
outsb
mov dx,0FD92h ; blue pallet data
outsb
mov dx,0FD94h ; red pallet data
outsb
mov dx,0FD96h ; green pallet data
outsb
pop esi
ret
;**************************************
getpal:
mov dx,0FD90h ; pallet code
out dx,al
; outsb
mov dx,0FD92h ; blue pallet data
insb
mov dx,0FD94h ; red pallet data
insb
mov dx,0FD96h ; green pallet data
insb
ret
look_me:
call sub_esi
dd 0,0
dw 1,0,164,66,640-165,256+62+15,15,0,0,0
boxdt:
call sub_edi
dw 3,64,10,2,2,0,22,15,0,0
dw 1,20,20,80,2,0,22,15,14,1
boxdt1:
call sub_edi
dw 3,26,20,120,2,0,22,15,0,0
dw 1,20,20,80,2,0,22,15,0,0
ln1:
call sub_edi
dw 1,63,10,2,2,0,22,15,0,0
ln2:
call sub_edi
dw 1,63,10,2,2,0,22,15,2,0
ln3:
call sub_edi
dw 1,63,10,2,24,0,22,15,0,0
ln4:
call sub_edi
dw 1,63,10,2,24,0,22,15,2,0
ln5:
call sub_edi
dw 1,63,10,2,46,0,22,15,0,0
ln6:
call sub_edi
dw 1,63,10,2,46,0,22,15,2,0
; [count][sz_x][sz_y][off_x][off_y][+x][+y][f_col][b_col][s_no]
mozidt:
call sub_edi
dw 0 ;screen_no
dw 15 ; mozi_color
dw 124 ; 書き出し位置 x
dw 0 ; y
dw 0 ; next offset x
dw 22 ; next offset y
dw 3 ; gyo suu
db '00',0 ;[14]
db '00',0 ;[17]
db '00',0 ;[20]
dw 0,0